<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/3/26 0026
 * Time: 23:30
 */
//案例
//例1 匹配MAC地址 00:04:23:7c:4d:01
//preg_match('/^([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]$/','00:04:23:7c:4d:01',$matches);
preg_match('/([0-9a-z]{2}:){5}[0-9-a-z]{2}/','00:04:23:7c:4d:01',$matches);
preg_match('/([0-9a-z]{2}:){5}[0-9-a-z]{2}/','aa00:04:23:7c:4d:01',$matches);
preg_match('/(^[0-9a-z]{2}:){5}[0-9-a-z]{2}$/','aa00:04:23:7c:4d:01',$matches);//开头不正确 匹配不到
//preg_match('/\b([0-9a-f][0-9a-f]:){5}[0-9a-f][0-9a-f]\b/','00:04:23:7c:4d:01',$matches);
//array(2) {
//    [0]=>
//  string(17) "00:04:23:7c:4d:01"
//    [1]=>
//  string(3) "4d:"
//}
//解释 ^ $ 限制标题的开始和结束范围 它包含两个部分

//([0-9a-f][0-9a-f]:){5} 匹配前五个由2个字符和关联的冒号:的组合
//[0-9a-f][0-9a-f] 第六个两个字符组成的组合
//也可以这样写 /(^[0-9a-z]{2}:){5}[0-9-a-z]{2}$/
//例2匹配邮箱 /([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9]+)>/
preg_match('/([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9]+)>/','yinfanliang de email <554665488@qq.com>',$matches);
preg_match("/([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9_-]+)>/",'yinfanliang de email <554665488@qq.com>',$matches);
preg_match("/([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-z]{2,4})>/",'yinfanliang de email <554665488@qq.com>',$matches);
//preg_match('/([^<]+)<([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z0-9]+)>/','yinfanliang de email <554665488@qq.com>',$matches);
//array(4) {
//    [0]=>
//  string(39) "yinfanliang de email <554665488@qq.com>"
//    [1]=>
//  string(21) "yinfanliang de email "
//    [2]=>
//  string(16) "554665488@qq.com"
//    [3]=>
//  string(3) "qq."
//}
//preg_match('/([^<]+)<(?P<email>[a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9]+)>/','yinfanliang de email <554665488@qq.com>',$matches);
//array(5) {
//    [0]=>
//  string(39) "yinfanliang de email <554665488@qq.com>"
//    [1]=>
//  string(21) "yinfanliang de email "
//    ["email"]=>
//  string(16) "554665488@qq.com"
//    [2]=>
//  string(16) "554665488@qq.com"
//    [3]=>
//  string(3) "qq."
//}
//解释
//([^<]+) 匹配除了< 以为的所有的子正则式
//< 不属于任何子正则式
//([a-zA-Z0-9_-]+@([a-zA-Z0-9_-]+\\.)+[a-zA-Z0-9]+) 匹配email本身
//[a-zA-Z0-9_-]+ 匹配@之前的所有内容
//@ 匹配@符号
//([a-zA-Z0-9_-]+\\.) 匹配一个或者更多级的子域名子正则式 注意这个 \ 也被 \转义了 因为正则式是用双引号包含 最好用单引号包含正则式
//[a-zA-Z0-9_-]+ 匹配顶级的域名 这样写不正确 应该为[a-z]{2,4}
var_dump($matches);